/**
 * @file drv_ad_det.h
 * @brief AD_DET 模拟串口发送驱动头文件
 * @date 2025-11-03
 */

#ifndef __DRV_AD_DET_H__
#define __DRV_AD_DET_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32f0xx_hal.h"
#include <stdint.h>
#include "user_config.h"

/* Exported constants --------------------------------------------------------*/

#if (FEATURE_DEBUG_DISABLE_AD_DET_INPUT_PA13 == 1)
/* 调试模式：PA13接收(AD_DET2), PA14发送(AD_DET1) - PB8被BOOT占用 */
#define AD_DET_RX_PIN              GPIO_PIN_13   /* PA13 - AD_DET2 接收引脚 */
#define AD_DET_RX_PORT             GPIOA
#define AD_DET_TX_PIN              GPIO_PIN_14   /* PA14 - AD_DET1 发送引脚 */
#define AD_DET_TX_PORT             GPIOA
#else
/* 正常模式：PB8接收(AD_DET), PA14发送(AD_DET1) */
#define AD_DET_RX_PIN              GPIO_PIN_8    /* PB8 - AD_DET 接收引脚 */
#define AD_DET_RX_PORT             GPIOB
#define AD_DET_TX_PIN              GPIO_PIN_14   /* PA14 - AD_DET1 发送引脚 */
#define AD_DET_TX_PORT             GPIOA
#endif

/* 通信参数 */
#define AD_DET_BAUD_RATE           9600          /* 模拟波特率 */
#define AD_DET_BIT_TIME_US         104           /* 位时间(us): 1000000/9600≈104us */

/* Exported functions prototypes ---------------------------------------------*/

/**
 * @brief 初始化 AD_DET 驱动
 * @retval 0 成功，-1 失败
 */
int drv_ad_det_init(void);

/**
 * @brief 发送字符（通过PA14）
 * @param data 要发送的字符
 * @retval 0 成功，-1 失败
 * @note 接收功能已整合到中断中，直接调用 sys_manager_gpio_isr_callback()
 */
int drv_ad_det_send_char(uint8_t data);

#ifdef __cplusplus
}
#endif

#endif /* __DRV_AD_DET_H__ */

/******************************** 文件结束 *********************************/
